<!--SIF Implementation Specification 2.2-6 (March 17, 2008)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.sifinfo.org/infrastructure/2.x" xmlns:sif="http://www.sifinfo.org/infrastructure/2.x" elementFormDefault="qualified">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="imports/xml/xml.xsd" />
  <xs:complexType name="EnglishProficiencyType">
    <xs:sequence>
      <xs:element name="Code" type="sif:NCES0585EnglishProficiencyType" />
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="EnglishProficiency" type="sif:EnglishProficiencyType" />

  <xs:complexType name="LanguageListType">
    <xs:sequence>
      <xs:element name="Language" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:NISOZ3953LanguageCodesType" />
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
            <xs:element name="LanguageType" minOccurs="0" nillable="true" type="sif:NCES0327LanguageTypeType" />
            <xs:element name="Dialect" minOccurs="0" nillable="true" type="xs:normalizedString" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="LanguageList" type="sif:LanguageListType" />

  <xs:simpleType name="PrimaryAssignmentType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="PrimaryAssignment" type="sif:PrimaryAssignmentType" />

  <xs:complexType name="OtherNamesType">
    <xs:sequence>
      <xs:element name="Name" maxOccurs="unbounded">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="sif:OtherNameType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="OtherNames" type="sif:OtherNamesType" />

  <xs:complexType name="PlannedAssessmentParticipationType">
    <xs:simpleContent>
      <xs:extension base="xs:token">
        <xs:attribute name="Codeset" use="required">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="StateProvince" />
              <xs:enumeration value="Local" />
              <xs:enumeration value="Other" />
              <xs:enumeration value="Text" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="PlannedAssessmentParticipation" type="sif:PlannedAssessmentParticipationType" />

  <xs:complexType name="ExceptionalityCategoriesType">
    <xs:sequence>
      <xs:element name="ExceptionalityCategory" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code">
              <xs:simpleType>
                <xs:union>
                  <xs:simpleType>
                    <xs:restriction base="sif:NCES0768PrimaryDisabilityTypeType" />
                  </xs:simpleType>
                  <xs:simpleType>
                    <xs:restriction base="xs:token">
                      <xs:enumeration value="9999" />
                    </xs:restriction>
                  </xs:simpleType>
                </xs:union>
              </xs:simpleType>
            </xs:element>
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
            <xs:element name="ExceptionalityPriority">
              <xs:simpleType>
                <xs:restriction base="xs:token">
                  <xs:enumeration value="Primary" />
                  <xs:enumeration value="Secondary" />
                  <xs:enumeration value="Tertiary" />
                  <xs:enumeration value="Additional" />
                </xs:restriction>
              </xs:simpleType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ExceptionalityCategories" type="sif:ExceptionalityCategoriesType" />

  <xs:complexType name="ProgramStatusType">
    <xs:sequence>
      <xs:element name="Code">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="S001" />
            <xs:enumeration value="S002" />
            <xs:enumeration value="S003" />
            <xs:enumeration value="S004" />
            <xs:enumeration value="S005" />
            <xs:enumeration value="9999" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ProgramStatus" type="sif:ProgramStatusType" />

  <xs:complexType name="ProgramTypeType">
    <xs:sequence>
      <xs:element name="Code">
        <xs:simpleType>
          <xs:union>
            <xs:simpleType>
              <xs:restriction base="sif:NCES0274StudentFamilyProgramTypeType">
                <xs:enumeration value="0241" />
                <xs:enumeration value="0242" />
                <xs:enumeration value="0244" />
                <xs:enumeration value="0245" />
                <xs:enumeration value="0248" />
                <xs:enumeration value="0875" />
                <xs:enumeration value="0249" />
                <xs:enumeration value="0250" />
                <xs:enumeration value="0876" />
                <xs:enumeration value="0251" />
                <xs:enumeration value="0253" />
                <xs:enumeration value="0255" />
                <xs:enumeration value="0256" />
                <xs:enumeration value="2389" />
                <xs:enumeration value="2381" />
                <xs:enumeration value="0246" />
                <xs:enumeration value="0283" />
                <xs:enumeration value="0284" />
                <xs:enumeration value="2393" />
                <xs:enumeration value="0263" />
                <xs:enumeration value="0265" />
                <xs:enumeration value="0267" />
                <xs:enumeration value="0289" />
                <xs:enumeration value="0270" />
                <xs:enumeration value="0272" />
                <xs:enumeration value="0278" />
                <xs:enumeration value="9999" />
              </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:NCES0229ProgramTypeType">
                <xs:enumeration value="0300" />
                <xs:enumeration value="0400" />
                <xs:enumeration value="0800" />
                <xs:enumeration value="1300" />
                <xs:enumeration value="1400" />
                <xs:enumeration value="1800" />
                <xs:enumeration value="1900" />
                <xs:enumeration value="2200" />
                <xs:enumeration value="2300" />
                <xs:enumeration value="2400" />
                <xs:enumeration value="2900" />
                <xs:enumeration value="3000" />
                <xs:enumeration value="3100" />
                <xs:enumeration value="3200" />
              </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="S001" />
                <xs:enumeration value="S002" />
                <xs:enumeration value="S003" />
                <xs:enumeration value="S004" />
                <xs:enumeration value="S005" />
                <xs:enumeration value="S006" />
                <xs:enumeration value="S007" />
                <xs:enumeration value="S008" />
                <xs:enumeration value="S009" />
                <xs:enumeration value="S010" />
                <xs:enumeration value="S011" />
                <xs:enumeration value="S012" />
                <xs:enumeration value="S013" />
                <xs:enumeration value="S014" />
                <xs:enumeration value="S015" />
                <xs:enumeration value="S016" />
              </xs:restriction>
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ProgramType" type="sif:ProgramTypeType" />

  <xs:simpleType name="GraduationRequirementType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="GraduationRequirement" type="sif:GraduationRequirementType" />

  <xs:complexType name="SubjectAreaListType">
    <xs:sequence>
      <xs:element name="SubjectArea" maxOccurs="unbounded" type="sif:SubjectAreaType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SubjectAreaList" type="sif:SubjectAreaListType" />

  <xs:complexType name="TermSpanType">
    <xs:sequence>
      <xs:element name="Code" type="sif:NCES0266SessionTypeType" />
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="TermSpan" type="sif:TermSpanType" />

  <xs:complexType name="SchoolContactListType">
    <xs:sequence>
      <xs:element name="SchoolContact" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="PublishInDirectory" minOccurs="0" nillable="true" type="sif:PublishInDirectoryType" />
            <xs:element name="ContactInfo" type="sif:ContactInfoType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SchoolContactList" type="sif:SchoolContactListType" />

  <xs:simpleType name="SchoolURLType">
    <xs:restriction base="xs:anyURI" />
  </xs:simpleType>

  <xs:element name="SchoolURL" type="sif:SchoolURLType" />

  <xs:simpleType name="LEANameType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="LEAName" type="sif:LEANameType" />

  <xs:simpleType name="LastNameType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="LastName" type="sif:LastNameType" />

  <xs:simpleType name="FirstNameType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="FirstName" type="sif:FirstNameType" />

  <xs:simpleType name="MiddleNameType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="MiddleName" type="sif:MiddleNameType" />

  <xs:simpleType name="SSNType">
    <xs:restriction base="xs:token" />
  </xs:simpleType>

  <xs:element name="SSN" type="sif:SSNType" />

  <xs:simpleType name="IDEAType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="IDEA" type="sif:IDEAType" />

  <xs:simpleType name="MigrantType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Migrant" type="sif:MigrantType" />

  <xs:simpleType name="Title1Type">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Title1" type="sif:Title1Type" />

  <xs:simpleType name="GiftedTalentedType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="GiftedTalented" type="sif:GiftedTalentedType" />

  <xs:simpleType name="EconomicDisadvantageType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="EconomicDisadvantage" type="sif:EconomicDisadvantageType" />

  <xs:simpleType name="ELLType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="ELL" type="sif:ELLType" />

  <xs:simpleType name="HomelessType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Homeless" type="sif:HomelessType" />

  <xs:simpleType name="Section504Type">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Section504" type="sif:Section504Type" />

  <xs:simpleType name="VocationalConcentratorType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="VocationalConcentrator" type="sif:VocationalConcentratorType" />

  <xs:simpleType name="ImmigrantType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Immigrant" type="sif:ImmigrantType" />

  <xs:simpleType name="NeglectedDelinquentType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
      <xs:enumeration value="Unknown" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="NeglectedDelinquent" type="sif:NeglectedDelinquentType" />

  <xs:simpleType name="CourseCodeType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="CourseCode" type="sif:CourseCodeType" />

  <xs:simpleType name="StateCourseCodeType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="StateCourseCode" type="sif:StateCourseCodeType" />

  <xs:simpleType name="DistrictCourseCodeType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="DistrictCourseCode" type="sif:DistrictCourseCodeType" />

  <xs:simpleType name="CourseTitleType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="CourseTitle" type="sif:CourseTitleType" />

  <xs:complexType name="IdentificationInfoListType">
    <xs:sequence>
      <xs:element name="IdentificationInfo" maxOccurs="unbounded" type="sif:IdentificationInfoType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="IdentificationInfoList" type="sif:IdentificationInfoListType" />

  <xs:complexType name="IdentificationInfoType">
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Code" use="required">
          <xs:simpleType>
            <xs:restriction base="sif:NCES0147IdentificationSystemType">
              <xs:enumeration value="0175" />
              <xs:enumeration value="0264" />
              <xs:enumeration value="0276" />
              <xs:enumeration value="0764" />
              <xs:enumeration value="9999" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="IdentificationInfo" type="sif:IdentificationInfoType" />

  <xs:complexType name="CourseCreditsType">
    <xs:simpleContent>
      <xs:extension base="xs:decimal">
        <xs:attribute name="Type" use="required" type="sif:NCES0108CreditTypeEarnedType" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="CourseCredits" type="sif:CourseCreditsType" />

  <xs:complexType name="InstructionalLevelType">
    <xs:sequence>
      <xs:element name="Code" type="sif:NCES0437InstructionalLevelType" />
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="InstructionalLevel" type="sif:InstructionalLevelType" />

  <xs:complexType name="AddressListType">
    <xs:sequence>
      <xs:element name="Address" maxOccurs="unbounded">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="sif:AddressType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="AddressList" type="sif:AddressListType" />

  <xs:complexType name="AddressType">
    <xs:sequence>
      <xs:element name="Street">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Line1" type="xs:normalizedString" />
            <xs:element name="Line2" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="Line3" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="Complex" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="StreetNumber" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="StreetPrefix" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="StreetName" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="StreetType" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="StreetSuffix" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="ApartmentType" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="ApartmentNumberPrefix" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="ApartmentNumber" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="ApartmentNumberSuffix" minOccurs="0" nillable="true" type="xs:normalizedString" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="City" type="xs:normalizedString" />
      <xs:element name="County" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="StateProvince" type="sif:StateProvinceType" />
      <xs:element name="Country" type="sif:CountryType" />
      <xs:element name="PostalCode" type="xs:normalizedString" />
      <xs:element name="GridLocation" minOccurs="0" nillable="true" type="sif:GridLocationType" />
    </xs:sequence>
    <xs:attribute name="Type" use="required" type="sif:NCES0025AddressTypeType" />
  </xs:complexType>

  <xs:element name="Address" type="sif:AddressType" />

  <xs:simpleType name="StateProvinceType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="sif:USPSAbbreviationsType" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="sif:CanadaPostProvincesAndTerritoriesType" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:token" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="StateProvince" type="sif:StateProvinceType" />

  <xs:simpleType name="CountryType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="sif:ISO31661EnglishCountryNamesAndCodeElementsType" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="sif:ISO31663CodeForFormerlyUsedNamesOfCountriesType" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="Country" type="sif:CountryType" />

  <xs:simpleType name="CongressionalDistrictType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="xs:unsignedInt" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="xs:token" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="CongressionalDistrict" type="sif:CongressionalDistrictType" />

  <xs:complexType name="ContactInfoType">
    <xs:sequence>
      <xs:element name="Name">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Prefix" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="LastName" minOccurs="0" nillable="true" type="sif:LastNameType" />
            <xs:element name="FirstName" minOccurs="0" nillable="true" type="sif:FirstNameType" />
            <xs:element name="MiddleName" minOccurs="0" nillable="true" type="sif:MiddleNameType" />
            <xs:element name="Suffix" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="PreferredName" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="SortName" minOccurs="0" nillable="true" type="xs:normalizedString" />
            <xs:element name="FullName" minOccurs="0" nillable="true" type="xs:normalizedString" />
          </xs:sequence>
          <xs:attribute name="Type" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="01" />
                <xs:enumeration value="02" />
                <xs:enumeration value="03" />
                <xs:enumeration value="04" />
                <xs:enumeration value="05" />
                <xs:enumeration value="07" />
                <xs:enumeration value="08" />
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="PositionTitle" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="Role" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="Address" minOccurs="0" nillable="true" type="sif:AddressType" />
      <xs:element name="EmailList" minOccurs="0" nillable="true" type="sif:EmailListType" />
      <xs:element name="PhoneNumberList" minOccurs="0" nillable="true" type="sif:PhoneNumberListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ContactInfo" type="sif:ContactInfoType" />

  <xs:simpleType name="HispanicLatinoType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="HispanicLatino" type="sif:HispanicLatinoType" />

  <xs:complexType name="RaceListType">
    <xs:sequence>
      <xs:element name="Race" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:NCES0849RaceType" />
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
            <xs:element name="Proportion" minOccurs="0" nillable="true" type="xs:decimal" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="RaceList" type="sif:RaceListType" />

  <xs:simpleType name="GenderType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="M" />
      <xs:enumeration value="F" />
      <xs:enumeration value="U" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Gender" type="sif:GenderType" />

  <xs:simpleType name="BirthDateType">
    <xs:restriction base="xs:date" />
  </xs:simpleType>

  <xs:element name="BirthDate" type="sif:BirthDateType" />

  <xs:complexType name="DemographicsType">
    <xs:sequence>
      <xs:element name="RaceList" minOccurs="0" nillable="true" type="sif:RaceListType" />
      <xs:element name="HispanicLatino" minOccurs="0" nillable="true" type="sif:HispanicLatinoType" />
      <xs:element name="Gender" minOccurs="0" nillable="true" type="sif:GenderType" />
      <xs:element name="BirthDate" minOccurs="0" nillable="true" type="sif:BirthDateType" />
      <xs:element name="BirthDateVerification" minOccurs="0" nillable="true" type="sif:NCES0315BirthdateVerificationType" />
      <xs:element name="PlaceOfBirth" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="CountyOfBirth" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="StateOfBirth" minOccurs="0" nillable="true" type="sif:StateProvinceType" />
      <xs:element name="CountryOfBirth" minOccurs="0" nillable="true" type="sif:CountryType" />
      <xs:element name="CountriesOfCitizenship" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CountryOfCitizenship" maxOccurs="unbounded" type="sif:CountryType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CountriesOfResidency" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="CountryOfResidency" maxOccurs="unbounded" type="sif:CountryType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="CountryArrivalDate" minOccurs="0" nillable="true" type="xs:date" />
      <xs:element name="CitizenshipStatus" minOccurs="0" nillable="true" type="sif:NCES0322CitizenshipStatusType" />
      <xs:element name="EnglishProficiency" minOccurs="0" nillable="true" type="sif:EnglishProficiencyType" />
      <xs:element name="LanguageList" minOccurs="0" nillable="true" type="sif:LanguageListType" />
      <xs:element name="DwellingArrangement" minOccurs="0" nillable="true">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Code" type="sif:NCES0600DwellingArrangementType" />
            <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="MaritalStatus" minOccurs="0" nillable="true" type="sif:NCES0330MaritalStatusType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Demographics" type="sif:DemographicsType" />

  <xs:simpleType name="EducationalLevelType">
    <xs:restriction base="sif:NCES0332HighestLevelOfEducationCompletedType" />
  </xs:simpleType>

  <xs:element name="EducationalLevel" type="sif:EducationalLevelType" />

  <xs:complexType name="ElectronicIdListType">
    <xs:sequence>
      <xs:element name="ElectronicId" maxOccurs="unbounded" type="sif:ElectronicIdType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="ElectronicIdList" type="sif:ElectronicIdListType" />

  <xs:complexType name="ElectronicIdType">
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="Barcode" />
              <xs:enumeration value="Magstripe" />
              <xs:enumeration value="PIN" />
              <xs:enumeration value="RFID" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="ElectronicId" type="sif:ElectronicIdType" />

  <xs:complexType name="EmailListType">
    <xs:sequence>
      <xs:element name="Email" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="sif:EmailType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="EmailList" type="sif:EmailListType" />

  <xs:complexType name="EmailType">
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="Primary" />
              <xs:enumeration value="Alternate1" />
              <xs:enumeration value="Alternate2" />
              <xs:enumeration value="Alternate3" />
              <xs:enumeration value="Alternate4" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="Email" type="sif:EmailType" />

  <xs:simpleType name="EntryDateType">
    <xs:restriction base="xs:date" />
  </xs:simpleType>

  <xs:element name="EntryDate" type="sif:EntryDateType" />

  <xs:simpleType name="ExitDateType">
    <xs:restriction base="xs:date" />
  </xs:simpleType>

  <xs:element name="ExitDate" type="sif:ExitDateType" />

  <xs:complexType name="GradeLevelType">
    <xs:sequence>
      <xs:element name="Code">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="PK" />
            <xs:enumeration value="KG" />
            <xs:enumeration value="01" />
            <xs:enumeration value="02" />
            <xs:enumeration value="03" />
            <xs:enumeration value="04" />
            <xs:enumeration value="05" />
            <xs:enumeration value="06" />
            <xs:enumeration value="07" />
            <xs:enumeration value="08" />
            <xs:enumeration value="09" />
            <xs:enumeration value="10" />
            <xs:enumeration value="11" />
            <xs:enumeration value="12" />
            <xs:enumeration value="PG" />
            <xs:enumeration value="UN" />
            <xs:enumeration value="Other" />
            <xs:enumeration value="Unknown" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GradeLevel" type="sif:GradeLevelType" />

  <xs:complexType name="GradeLevelsType">
    <xs:sequence>
      <xs:element name="GradeLevel" maxOccurs="unbounded" type="sif:GradeLevelType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GradeLevels" type="sif:GradeLevelsType" />

  <xs:simpleType name="GraduationDateType">
    <xs:restriction base="sif:PartialDateType" />
  </xs:simpleType>

  <xs:element name="GraduationDate" type="sif:GraduationDateType" />

  <xs:simpleType name="ProjectedGraduationYearType">
    <xs:restriction base="xs:gYear" />
  </xs:simpleType>

  <xs:element name="ProjectedGraduationYear" type="sif:ProjectedGraduationYearType" />

  <xs:simpleType name="OnTimeGraduationYearType">
    <xs:restriction base="xs:gYear" />
  </xs:simpleType>

  <xs:element name="OnTimeGraduationYear" type="sif:OnTimeGraduationYearType" />

  <xs:complexType name="GridLocationType">
    <xs:sequence>
      <xs:element name="Latitude">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:minInclusive value="-90" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="90" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="Longitude">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:minInclusive value="-180" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="180" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="GridLocation" type="sif:GridLocationType" />

  <xs:simpleType name="HomeroomNumberType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="HomeroomNumber" type="sif:HomeroomNumberType" />

  <xs:simpleType name="LocalIdType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="LocalId" type="sif:LocalIdType" />

  <xs:complexType name="MeetingTimeType">
    <xs:sequence>
      <xs:element name="TimetableDay" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="TimetablePeriod" minOccurs="0" nillable="true" type="xs:normalizedString" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="MeetingTime" type="sif:MeetingTimeType" />

  <xs:complexType name="NameType">
    <xs:complexContent>
      <xs:extension base="sif:BaseNameType">
        <xs:attribute name="Type" use="required">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="01" />
              <xs:enumeration value="02" />
              <xs:enumeration value="03" />
              <xs:enumeration value="04" />
              <xs:enumeration value="05" />
              <xs:enumeration value="07" />
              <xs:enumeration value="08" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:element name="Name" type="sif:NameType" />

  <xs:simpleType name="NCESIdType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="NCESId" type="sif:NCESIdType" />

  <xs:simpleType name="OperationalStatusType">
    <xs:union>
      <xs:simpleType>
        <xs:restriction base="sif:NCES0256SchoolStatusType" />
      </xs:simpleType>
      <xs:simpleType>
        <xs:restriction base="sif:NCES0032AgencyStatusType" />
      </xs:simpleType>
    </xs:union>
  </xs:simpleType>

  <xs:element name="OperationalStatus" type="sif:OperationalStatusType" />

  <xs:complexType name="OtherIdType">
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required" type="sif:NCES0147IdentificationSystemType" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="OtherId" type="sif:OtherIdType" />

  <xs:complexType name="PhoneNumberListType">
    <xs:sequence>
      <xs:element name="PhoneNumber" maxOccurs="unbounded">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="sif:PhoneNumberType">
              <xs:attribute name="SIF_Action" use="optional">
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="PhoneNumberList" type="sif:PhoneNumberListType" />

  <xs:complexType name="PhoneNumberType">
    <xs:sequence>
      <xs:element name="Number" type="xs:normalizedString" />
      <xs:element name="Extension" minOccurs="0" nillable="true" type="xs:normalizedString" />
      <xs:element name="ListedStatus" minOccurs="0" nillable="true">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="Listed" />
            <xs:enumeration value="Unlisted" />
            <xs:enumeration value="Unknown" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Type" use="required" type="sif:NCES0280TelephoneNumberTypeType" />
  </xs:complexType>

  <xs:element name="PhoneNumber" type="sif:PhoneNumberType" />

  <xs:complexType name="ProgramType">
    <xs:simpleContent>
      <xs:extension base="xs:normalizedString">
        <xs:attribute name="Type" use="required">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="Foodservice" />
              <xs:enumeration value="CFDA" />
              <xs:enumeration value="NCES" />
              <xs:enumeration value="StateDOE" />
              <xs:enumeration value="Local" />
              <xs:enumeration value="Text" />
            </xs:restriction>
          </xs:simpleType>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:element name="Program" type="sif:ProgramType" />

  <xs:simpleType name="PublishInDirectoryType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Yes" />
      <xs:enumeration value="No" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="PublishInDirectory" type="sif:PublishInDirectoryType" />

  <xs:complexType name="RelationshipType">
    <xs:sequence>
      <xs:element name="Code" type="sif:NCES0609RelationshipToStudentType" />
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="Relationship" type="sif:RelationshipType" />

  <xs:simpleType name="SchoolNameType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="SchoolName" type="sif:SchoolNameType" />

  <xs:simpleType name="SchoolYearType">
    <xs:restriction base="xs:gYear" />
  </xs:simpleType>

  <xs:element name="SchoolYear" type="sif:SchoolYearType" />

  <xs:complexType name="SIF_ExtendedElementsType">
    <xs:sequence>
      <xs:element name="SIF_ExtendedElement" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="sif:ExtendedContentType">
              <xs:attribute name="Name" use="required" type="xs:normalizedString" />
              <!--<xs:attribute ref="xsi:type" use="optional" />-->
              <xs:attribute name="SIF_Action" use="optional">
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="Delete" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SIF_ExtendedElements" type="sif:SIF_ExtendedElementsType" />

  <xs:complexType name="SCEDCodeType">
    <xs:sequence>
      <xs:element name="CourseDescription" type="sif:SCEDCourseTitlesType" />
      <xs:element name="CourseLevel">
        <xs:simpleType>
          <xs:restriction base="xs:token">
            <xs:enumeration value="B" />
            <xs:enumeration value="G" />
            <xs:enumeration value="E" />
            <xs:enumeration value="H" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="AvailableCredit">
        <xs:simpleType>
          <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:fractionDigits value="2" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SequenceNumber">
        <xs:simpleType>
          <xs:restriction base="xs:unsignedInt">
            <xs:minInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="9" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SequenceLimit">
        <xs:simpleType>
          <xs:restriction base="xs:unsignedInt">
            <xs:minInclusive value="1" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
            <xs:maxInclusive value="9" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SCEDCode" type="sif:SCEDCodeType" />

  <xs:simpleType name="StateProvinceIdType">
    <xs:restriction base="xs:normalizedString" />
  </xs:simpleType>

  <xs:element name="StateProvinceId" type="sif:StateProvinceIdType" />

  <xs:complexType name="SubjectAreaType">
    <xs:sequence>
      <xs:element name="Code">
        <xs:simpleType>
          <xs:union>
            <xs:simpleType>
              <xs:restriction base="sif:SCEDSecondaryCoursesType" />
            </xs:simpleType>
            <xs:simpleType>
              <xs:restriction base="sif:SCEDNonSecondaryCoursesType" />
            </xs:simpleType>
          </xs:union>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OtherCodeList" minOccurs="0" nillable="true" type="sif:OtherCodeListType" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="SubjectArea" type="sif:SubjectAreaType" />

  <xs:complexType name="OtherCodeListType">
    <xs:sequence>
      <xs:element name="OtherCode" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:token">
              <xs:attribute name="Codeset" use="required">
                <xs:simpleType>
                  <xs:restriction base="xs:token">
                    <xs:enumeration value="StateProvince" />
                    <xs:enumeration value="Local" />
                    <xs:enumeration value="Other" />
                    <xs:enumeration value="Text" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="OtherCodeList" type="sif:OtherCodeListType" />

  <xs:complexType name="MealStatusType">
    <xs:sequence>
      <xs:element name="StartDate" minOccurs="0" nillable="true" type="xs:date" />
      <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date" />
      <xs:element name="SchoolYear" minOccurs="0" nillable="true" type="sif:SchoolYearType" />
    </xs:sequence>
    <xs:attribute name="Type" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="Free" />
          <xs:enumeration value="Reduced" />
          <xs:enumeration value="None" />
          <xs:enumeration value="NA" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="MealStatus" type="sif:MealStatusType" />

  <xs:complexType name="EarnedStatusType">
    <xs:sequence>
      <xs:element name="StartDate" minOccurs="0" nillable="true" type="xs:date" />
      <xs:element name="EndDate" minOccurs="0" nillable="true" type="xs:date" />
    </xs:sequence>
    <xs:attribute name="Type" use="required">
      <xs:simpleType>
        <xs:restriction base="xs:token">
          <xs:enumeration value="Yes" />
          <xs:enumeration value="No" />
          <xs:enumeration value="NA" />
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>

  <xs:element name="EarnedStatus" type="sif:EarnedStatusType" />

  <xs:simpleType name="MealTypeType">
    <xs:restriction base="xs:token">
      <xs:enumeration value="FirstMeal" />
      <xs:enumeration value="SecondMeal" />
      <xs:enumeration value="StaffMeal" />
      <xs:enumeration value="AdultMeal" />
      <xs:enumeration value="AlaCarte" />
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="MealType" type="sif:MealTypeType" />

</xs:schema>